var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    icon:false,
    id:'',
    status:'1',
    poster:false,
    share:false,
    tipShow:false,
    show:false,
    isLoadMore: true,
    page: 1,
    total_page: 0,
    list:[],
    activity_id: 0,
    activity_data: {},
    hand_goods_obj: {},
    hand_goods_id: 0,
    shareShow: false,
    specsShow: false,
    goodsPopupShow: false,
    cartListShow: false,
    time: 0,
    timeData: {},
    shareOptions: [
      { name: '生成海报', icon: 'poster' },
      { name: '分享给好友', icon: 'wechat', openType: 'share' }
    ],
    goods_list: [],
    buyerListData: [],
    carList: [],
    goodsCartsTotal: {},
    language: {},
    posterShow: false,
    cartsNum: 0,
    cartsTotal: 0,
    cart_ids: [],

    showChoose: false,
    radioChoose: '',
    dispatch_types: [],
    imgPath: app.globalData.imgPath,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      id: options.id
    });
    if (options.scene) {
      let scene = decodeURIComponent(options.scene);
      let info_arr = [];
      info_arr = scene.split(",");
      //后端说参数过多超过微信限制，改为只穿值用逗号分离，第一个是ID，第二个是mid，二维码由后台生成，mid暂时无用
      this.setData({
        id: info_arr[0]
      });
      console.log(info_arr,scene);
    }
    let language = wx.getStorageSync('langIndex');
    this.setData({ 'language': language.en });

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    if (this.data.id && this.data.id != 0) {
      this.search();
      this.getData();
      this.getCartList();
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 加载更多
    if (this.data.isLoadMore) {
      this.getMoreData();
    } else {
      console.log('没有更多数据');
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    return {
      path: "/packageE/others/fixedPrice/fixedPrice?id="+this.data.id
    };
  },
  toMember(){
    wx.reLaunch({
      url: '/packageG/member_v2/member_v2'
    });
  },
  changeIcon(){
    this.setData({
      icon:true
    });
  },
  closeIcon() {
    this.setData({
      icon: false
    });
  },
  posterClose() {
    this.setData({
      poster: false
    });
  },
  openGoodsDetail(e) {

    let item = e.currentTarget.dataset.item;
    if (item.id == this.data.hand_goods_id) {
      this.setData({
        goodsPopupShow: true,
      });
    } else {
      this.data.hand_goods_id = item.id;
      this.getGoodsDetails(item.id, 'goodsDetails');
    }
  },
  getGoodsDetails(id, type) {
    let urlStr = app.getNetAddresss('goods.goods.get-goods-page');
    app._postNetWork({
      url: urlStr,
      data: { id: Number(id) },
      success: (resdata) => {
        let res = resdata.data;
        if (res.result !== 1) return this.tips(res.msg);
        let name = '';
        if (type == 'goodsDetails') {
          name = 'goodsPopupShow';
        } else if (type == 'specs') {
          name = 'specsShow';
        }
        res.data.get_goods.end_time = this.data.time;
        this.setData({
          [name]: true,
          hand_goods_obj: res.data.get_goods
        });

      }
    });
  },

  close_yz_specs_popup(e) {
    console.log(e);
    if (e.detail.clicktype == 1) {
      //点击确认按钮
      this.addCartRequest({
        goods: { id: e.detail.goodsId },
        cartid: e.detail.cartid,
        total: e.detail.goodsCount,
        optionsId: e.detail.optionsId
      });
      this.setData({
        specsShow: false,
        //	optionsId: e.detail.optionsId,
        //	goodsCount: e.detail.goodsCount
      });
    } else {
      this.setData({
        specsShow: false,
      });
    }

  },
  openSpecs(e) {
    console.log(this.data.specsShow);
    let item = e.currentTarget.dataset.item;
    if (item.id == this.data.hand_goods_id) {
      this.setData({
        specsShow: true,
      });
    } else {
      this.data.hand_goods_id = item.id;
      this.getGoodsDetails(item.id, 'specs');
    }
  },
  //不同规格的同一商品求和
  calculateTotal(arr) {
    let temp = {};
    for (let i in arr) {
      let key = arr[i].goods_id;
      this.data.cart_ids.push(arr[i].id);
      if (temp[key]) {
        let goods_id = temp[key].goods_id;
        temp[key].goods_id = goods_id;
        temp[key].total = temp[key].total + arr[i].total;
      } else {
        temp[key] = {};
        temp[key].goods_id = arr[i].goods_id;
        temp[key].total = arr[i].total;
        temp[key].id = arr[i].id;
      }
    }
    this.setData({
      goodsCartsTotal: temp
    });
  },
  //统计购物车的总价格和总数量
  getFirstCart(data) {
    this.data.carts = data;
    let cartsNum = 0;
    let cartsTotal = 0;
    this.data.carts.forEach(item => {
      cartsNum += item.total;
      cartsTotal += item.total * item.goods.price;
    });
    cartsTotal = parseFloat(cartsTotal).toFixed(2);
    this.setData({
      cartsNum, cartsTotal
    });
    this.calculateTotal(this.data.carts);

  },
  openCartListPopup() {
    this.setData({
      cartListShow: (!this.data.cartListShow)
    });
  },
  cartListAdd(item) {
    console.log(item.detail);
    console.log(this.data.goodsCartsTotal);
    this.addCartRequest({ goods: item.detail.goods, cartid: item.detail.id, total: item.detail.total + 1 });
  },
  cartListReduce(item) {
    console.log(item.detail);
    this.reduceCartRequest({ goods: item.detail.goods, cartid: item.detail.id, total: item.detail.total - 1 });
  },
  close_yz_cartList_popup() {
    this.setData({
      cartListShow: false,
    });
  },
  submitGoods() {

    if (this.data.showChoose && !this.data.radioChoose) {
      return this.tips("请先选择配送方式");
    }
    if (this.data.showChoose) {
      // 配送方式有冲突
      this.data.cart_ids = [];
      for (let i = 0; i < this.data.dispatch_types[this.data.radioChoose].member_carts.length; i++) {
        this.data.cart_ids.push(this.data.dispatch_types[this.data.radioChoose].member_carts[i].id);
      }
    }

    wx.navigateTo({
      url: '/packageD/buy/myOrder_v2/myOrder_v2?tag=-10&cart_ids=' + JSON.stringify(this.data.cart_ids)
    });
  },
  checkGoods() {
    if(this.data.cartsNum<=0){
      this.tips('去选择商品');
      return;
    }
    let urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.checkout.index');
    app._getNetWork({
      url: urlStr,
      data: {
        cart_ids: this.data.cart_ids.join(',')
      },
      success: (resdata) => {
        let res = resdata.data;
        if (res.result !== 1) return this.tips(res.msg);
        if (res.data.need_choose == 1) {
          this.setData({
            dispatch_types: res.data.dispatch_types,
            showChoose: true
          });
        } else {
          this.submitGoods();
        }
      }
    });
  },
  getCartList() {

    let urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.member-cart.index');
    app._postNetWork({
      url: urlStr,
      data: {id:this.data.id},
      success: (resdata) => {
        let res = resdata.data;
        if (res.result !== 1) return this.tips(res.msg);
        let carList = res.data;
        this.setData({
          carList
        });
        this.getFirstCart(carList);
        //	this.calculateTotal(carList);
        console.log(carList);

      }
    });
  },
  updateCartNum(evt) {
    let item = evt.currentTarget.dataset.item;
    let cartid = evt.currentTarget.dataset.cartid;
    let num = evt.detail.value;
    this.addCartRequest({ goods: item, cartid ,total: num});
  },
  addCartNum(evt) {
    let item = evt.currentTarget.dataset.item;
    let cartid = evt.currentTarget.dataset.cartid;
    this.addCartRequest({ goods: item, cartid });
  },
  //加入购物车
  addCartRequest(obj) {
    let { goods, cartid, total, optionsId } = obj;
    console.log("加入购物车");
    if (goods.vip_level_status && goods.vip_level_status.status == 1) {
      return this.tips(goods.vip_level_status.tips);
    }

    if (goods.stock == 0) {
      return this.tips("库存为零");
    }
    let num = 1;
    let urlStr = '';
    let jsons = {};
    if (!app._isTextEmpty(this.data.goodsCartsTotal[goods.id]) && cartid != 0) {
      if (this.data.goodsCartsTotal[goods.id].total >= goods.stock) {
        return this.tips("库存不足");
      }
      let obj = this.data.goodsCartsTotal;
      num = Number(obj[goods.id].total) + 1;
      if (total && total > 0) {
        num = total;
      }
      this.data.goodsCartsTotal[goods.id].total = num;
      urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.member-cart.update-num');
      jsons = {
        id: cartid,
        num: num
      };
    } else {
      urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.member-cart.store');
      if (total && total > 0) {
        num = total;
      }
      jsons = {
        goods_id: goods.id,
        total: num,
        id: this.data.id
      };
      if (optionsId && optionsId > 0) jsons.option_id = optionsId;
    }
    

    app._getNetWork({
      url: urlStr,
      data: jsons,
      success: (resdata) => {
        var res = resdata.data;
        this.tips(res.msg);
        if (res.result == 1) {
          this.getCartList();
        }
      }
    });
  },
  tips(msg) {
    wx.showToast({
      title: msg,
      icon: 'none'
    });
    return false;
  },
  previewImage() {
    wx.showToast({
      title: '长按分享好友',
      icon: 'none',
      duration: 1800
    });
    wx.previewImage({
      urls: [this.data.info.applets_poster] // 当前显示图片的链接
    });
  },
  saveImg() {
    // var times = _this.data.timeend - _this.data.timestart;
    wx.getSetting({
      success(res) {
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success() {
              console.log('授权成功');
            }
          });
        }
      }
    });
    var imgSrc = this.data.info.applets_poster;
    wx.downloadFile({
      url: imgSrc,
      success: function (res) {
        console.log(res);
        //图片保存到本地
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: function (data) {
            wx.showToast({
              title: '保存成功',
              icon: 'none',
              duration: 2000
            });
          },
          fail: function (err) {
            console.log(err);
            if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
              console.log("当初用户拒绝，再次发起授权");
              wx.openSetting({
                success(settingdata) {
                  if (settingdata.authSetting['scope.writePhotosAlbum']) {
                    wx.showToast({
                      icon: 'none',
                      title: '获取权限成功,再次长按保存图片',
                      duration: 1500
                    });
                  } else {
                    wx.showToast({
                      icon: 'none',
                      title: '获取权限失败,保存图片需要用户授权',
                      duration: 1500
                    });
                  }
                }
              });
            }
          },
          complete(res) {
            console.log(res);
          }
        });
      }
    });
  },
  copy(){
    wx.setClipboardData({
      data: this.data.info.applets_url,
      success(res){
        wx.showToast({
          title: '复制成功',
        });
      }
    });
    this.setData({

      share: false
    });
  },
  closeposter() {
    this.setData({
      poster: false,
    });
  },
  openposter(){
    this.setData({
      poster: true,
      share: false
    });
  },
  close(){
    this.setData({
      show: false
    });
  },
  closeShare() {
    this.setData({
      share: false
    });
  },
  closeTip() {
    this.setData({
      tipShow: false
    });
  },
  openTip() {
    this.setData({
      tipShow: true
    });
  },
  openShare() {
    this.setData({
      share: true
    });
  },
  open(){
    this.setData({
      show:true
    });
  },
  change(t) {
    if (t < 10) {
      return "0" + t;
    } else {
      return t;
    }
  },
  //将时间戳转换成正常时间格式
  timestampToTime(timestamp) {
    var date = new Date(timestamp * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000
    let Y = date.getFullYear() + "/";
    let M =
      (date.getMonth() + 1 < 10
        ? "0" + (date.getMonth() + 1)
        : date.getMonth() + 1) + "/";
    let D = this.change(date.getDate()) + " ";
    let h = this.change(date.getHours()) + ":";
    let m = this.change(date.getMinutes());
    let s = this.change(date.getSeconds());
    return Y + M + D + h + m + s;
  },
  toIndex(){
    wx.reLaunch({
      url: '/packageG/index/index'
    });
  },
  getTime(timeStamp) {
    var day = 0;
    var hours = 0;
    var minute = 0;
    var seconds = 0;
    day = Math.floor(timeStamp /1000 / 60 / 60 / 24);//计算天数
    hours = Math.floor(timeStamp / 1000  / 60 / 60 % 24);
    minute = Math.floor(timeStamp / 1000 / 60 % 60);
    seconds = Math.floor(timeStamp / 1000  % 60);

    var h = this.toDouble(hours);
    var m = this.toDouble(minute);
    var s = this.toDouble(seconds);
    var rest_time = {
      'day': day,
      'hours': h,
      'minutes': m,
      'seconds': s
    };
    this.setData({
      rest_time: rest_time
    });

  },
  toDouble(n) {   //将时分秒转化成二位数格式
    return n < 10 ? "0" + n : n;
  },
  checktime(){
    let that=this;
    var flag = null;

    if (that.data.info.start_at * 1000 > (new Date()).getTime()) {
      that.setData({
        status: '1',
      });

      flag = setInterval(()=> {

        let timeStamp = that.data.info.start_at * 1000 - (new Date()).getTime();

        if (timeStamp > 0) {
          timeStamp--;
          that.getTime(timeStamp);
        } else {

          clearInterval(flag);
          this.checktime();
        }
      }, 1000);

    }
    if (that.data.info.start_at * 1000 < (new Date()).getTime() && (new Date()).getTime()< that.data.info.end_at * 1000) {
      that.setData({
        status: '2',
        time:that.data.info.end_at * 1000 - (new Date()).getTime()
      });

      // 倒计时
      flag = setInterval(()=> {

        var timeStamp = that.data.info.end_at * 1000 - (new Date()).getTime();

        if (timeStamp > 0) {
          timeStamp--;
          that.getTime(timeStamp);
        } else {
          clearInterval(flag);
          this.checktime();
        }
      }, 1000);
    }
    if ((new Date()).getTime() > that.data.info.end_at * 1000){
      this.setData({
        status:'3'
      });
    }
  },
  goodsDetailCartAdd(evt) {
    this.setData({
      goodsPopupShow: false,
      specsShow: true
    });
  },
  getData(){
    let that=this;
    let urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.activity.get');
    app._getNetWork({
      url: urlStr,
      data: {
        id: this.data.id,
      },
      success: (resdata) => {
        var response = resdata.data;

        if (response.result == 1) {
          that.setData({
            info: response.data,
          });

          that.checktime();

          that.setData({
            'info.start_time': that.timestampToTime(that.data.info.start_at),
            'info.end_time': that.timestampToTime(that.data.info.end_at),
          });

        } else {
          this.setData({
            status: '3'
          });
          wx.showToast({
            title: response.msg,
            icon: 'none'
          });
        }
      },
      fail: function (res) {
        console.log(res);
      }
    });
  },
  search(e) {

    let urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.goods.get-goods-list');
    app._getNetWork({
      url: urlStr,
      data: {
        id:this.data.id,
      },
      success: (resdata) => {
        var response = resdata.data;
        if (response.result == 1) {
          this.setData({
            isLoadMore: true,
            total_page: response.data.last_page,
            list: response.data.data
          });
          if (!this.data.total_page) {
            this.setData({
              total_page: 0
            });
          }
        } else {
          wx.showToast({
            title: response.msg,
            icon: 'none'
          });
        }
      },
      fail: function (res) {
        console.log(res);
      }
    });
  },
  reduceCartNum(evt) {
    let item = evt.currentTarget.dataset.item;
    let cartid = evt.currentTarget.dataset.cartid;
    this.reduceCartRequest({ goods: item, cartid });
  },
  reduceCartRequest(obj) {
    let { goods, cartid, total } = obj;
    let id = goods.id;
    let num = 0;
    if (total || total === 0) {
      num = total;
    } else {
      let obj = this.data.goodsCartsTotal;
      num = Number(obj[id].total) - 1;
      this.data.goodsCartsTotal[id].total = num;
    }

    let urlStr = '';
    let json = {};
    if (num <= 0) {	//清楚购物车
      urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.member-cart.destroy');
      json = {
        ids: cartid
      };
    } else {
      urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.member-cart.update-num');
      json = {
        id: cartid,
        num: num
      };
    }
    app._getNetWork({
      url: urlStr,
      data: json,
      success: (resdata) => {
        var res = resdata.data;
        this.tips(res.msg);
        if (res.result == 1) {
          this.getCartList();
        }
      }
    });

  },
  // 获取更多数据
  getMoreData() {
    this.setData({
      isLoadMore: false
    });
    // 防止多次请求分页数据
    if (this.data.page >= this.data.total_page) {
      return;
    } else {
      let page = this.data.page + 1;
      this.setData({
        page
      });
      let urlStr = app.getNetAddresss('plugin.pack-fixed-price.api.goods.get-goods-list');
      app._getNetWork({
        url: urlStr,
        data: {
          id:this.data.id,
          page: this.data.page
        },
        success: (resdata) => {
          var response = resdata.data;
          if (response.result == 1) {
            var myData = this.data.list.concat(response.data.data);
            this.setData({
              list: myData,
              isLoadMore: true
            });
          } else {
            wx.showToast({
              title: response.msg,
              icon: 'none'
            });
            let pages = this.data.page - 1;
            this.setData({
              page: pages,
              isLoadMore: true
            });
          }
        },
        fail: function (res) {
          console.log(res);
        }
      });
    }
  },
});
